import { Util } from '../../utils/util.js';

export class MeasurementUnit {
    /**
     * @param {string} id - ID
     * @param {string} name - 名称
     * @param {boolean} supportDecimal - 是否支持小数，默认 true
     */
    constructor(id = '', name = '', supportDecimal = true) {
        this.id = id;
        this.name = name;
        this.supportDecimal = supportDecimal;
    }

    // 空实例
    static empty() {
        return new MeasurementUnit('', '', true);
    }

    // 克隆方法
    static clone(unit) {
        return new MeasurementUnit(unit.id, unit.name, unit.supportDecimal);
    }

    // 从 JSON 构建
    static fromJson(json) {
        return new MeasurementUnit(
            Util.jsonToString(json.id),
            Util.jsonToString(json.name),
            Util.jsonToBool(json.decimalSupport, true)
        );
    }

    // 从值构建
    static fromJsonValue({ id, name, supportDecimal }) {
        return new MeasurementUnit(
            Util.jsonToString(id),
            Util.jsonToString(name),
            Util.jsonToBool(supportDecimal, true)
        );
    }
}
